# 弱密码检测 工具类
# 拆分矩阵查询


def isPwdLevel(strs):
    # 模拟底层
    special = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=', '{', '}', ';', ':', '[', ']', ';',
               ':', '\"', '\\', '|', ',', '<', '.', '>', '/', '?', '~', '`']
    engUpper = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
                'V', 'W', 'X', 'Y', 'Z']
    engLower = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
                'v', 'w', 'x', 'y', 'z']
    engNums = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
    abc = list(strs)
    flag = 0
    flagSp = 0
    flagUp = 0
    flagLo = 0
    flagNu = 0
    for i in abc:
        for k in special:
            if i == k:
                print("包含特殊字符")
                flagSp = 1
        for k in engLower:
            if i == k:
                print("包含小写字母")
                flagUp = 1
        for k in engUpper:
            if i == k:
                print("包含大写字母")
                flagLo = 1
        for k in engNums:
            if i == k:
                print("包含数字")
                flagNu = 1

    # 编写一个函数，接收一个字符串作为参数，判断该字符串作为密码的话其安全强度如何。
    # 如果字符串中只包含大写字母、小写字母、数字字符或标点符号中的一种则为弱密码，
    # 包含两种为中低安全密码
    # 包含三种为中高安全密码
    # 包含四种则为强密码。
    flag = (flagSp + flagNu + flagLo + flagUp)

    return flag


if __name__ == "__main__":

    # pwd = "Ab4##\""
    # pwd = "Karl-Dujinyang-309933706@qq.com"
    pwd = "$Aa123456"
    ret = isPwdLevel(pwd)
    vat = isinstance(ret, int)

    print(ret)
    if vat:
        if ret == 4:
            print("-强密码-")
        elif ret == 3:
            print("-中高安全密码-")
        elif ret == 2:
            print("-中低安全密码-")
        elif ret == 1:
            print("-弱密码-")
